home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / DEF / Process / Transform / skip-zone < prev   
Text File  |  1998-10-23  |  3KB  |  63 lines

  1. skip-zone zones-to-skip distribution-type symbols
  2.                           &optional lengths zones
  3.  
  4. skip-zone is a straightforward disributor abling to spread a flat symbol or velocity pattern over the zones of a section. The distribution is made according to the length values bound to each of the zones of the section. skip-zone skips the number of zones before it starts distribution to the end of the section.
  5.  
  6. If the symbol pattern is distributed :once, then the symbol pattern overlaps the zones until there are no more symbols left, and the rests are distributed for the rest of the section. :repeat makes the symbol pattern repeat all over when the values are been used. :restart will make the pattern to start from the beginning each time zone changes.
  7.  
  8. skip-zone is used within def-section &cloning and it automatically adjusts into the context. This means you don't have to supply the length and zone values. If used outside a context the values must be supplied.
  9.  
  10. In the process of distribution the lengths of the zone are summed until they exceed the zone length, and the number of lengths that fit into this zone are filled with symbols. A zoned pattern is returned.
  11.  
  12. Note that a nil symbol or a velocity zone generates a rest zone. When the compiler notices nil values for a zone, even if the zone is a positive length, a rest zone is generated, and the compilation continues from the next zone.
  13.  
  14. (skip-zone 0 :once               ; skip 0 zones before distribution
  15.            '(a b c)              ; symbols to be distributed
  16.            '((1/4) (1/8) (1/4))  ; lenghts for each zone
  17.            '(1/2 1/2 1/2 1/2))   ; zone lengths of a section
  18. --> ((a b) (c = = =) nil nil)    ; symbols for each zone
  19.  
  20. (skip-zone 0 :once 
  21.            '(64 54 44 34 24 14 4) 
  22.            '((1/4) (1/8) (1/4))
  23.            '(1/2 1/2 1/2 1/2))
  24. --> ((64 54) (44 34 24 14) (4 0) nil)
  25.  
  26. (skip-zone 1 :once 
  27.            '(a b c) 
  28.            '((1/4) (1/8) (1/4))
  29.            '(1/2 1/2 1/2 1/2))
  30. --> (nil (a b c =) nil nil)
  31.  
  32. (skip-zone 1 :repeat 
  33.            '(a b c) 
  34.            '((1/4) (1/8) (1/4))
  35.            '(1/2 1/2 1/2))
  36. --> (nil (a b c a) (b c))
  37.  
  38. (skip-zone 1 :restart 
  39.            '(a b c)
  40.            '((1/4) (1/8) (1/4 1/8 1/16))
  41.            '(1/2 -1/2 1/2 -1/2 1/2))
  42. --> (nil nil (a b c a) nil (a b c a))
  43.  
  44. (skip-zone 1 :once 
  45.            '(a b c)
  46.            '((1/4) (1/8) (1/4 1/8 1/16))
  47.            '(1/2 -1/2 1/2 -1/2 1/2))
  48. --> (nil nil (a b c =) nil nil)
  49.  
  50. (skip-zone 1 :repeat
  51.            '(a b c) 
  52.            '(1/4 1/8 1/16)
  53.            '(1/2 1/2 1/2))
  54. --> (nil (a b c a) (b c a))
  55.  
  56. (skip-zone 1 :restart
  57.            '(a b c)
  58.            '(1/4 1/8 1/16)
  59.            '(1/2 -1/2 1/2 -1/2 1/2))
  60.  
  61. --> (nil nil (a b c a) nil (a b c a))
  62.  
  63.